\documentclass{sig-alternate-05-2015}
\usepackage[utf8]{inputenc}
\usepackage{color}

\def\inputfig#1{\input #1}
\def\inputtex#1{\input #1}
\def\inputal#1{\input #1}
\def\inputcode#1{\input #1}

\inputtex{logos.tex}
\inputtex{refmacros.tex}
\inputtex{other-macros.tex}

\begin{document}
\title{Type Inference in Cleavir}
\numberofauthors{2}
\author{\alignauthor
  Alex Wood}

\maketitle

\begin{abstract}
Type inference is an essential technique for obtaining good runtime
performance if code is written in a dynamically typed language such
as \commonlisp{}.

We describe a type-inference technique that works on an intermediate
representation of the code in the form of an instruction graph.
Unlike more traditional, but similar, intermediate representations,
ours manipulates only \commonlisp{} objects.  In other words,
low-level computations such as address calculations are not exposed,
making it possible for the compiler to determine type information for
all lexical variables.

Our technique is expressed as a traditional forward dataflow
computation, making it possible to use existing algorithms for such
analysis.

The technique described in this paper is part of the Cleavir compiler
framework, and it is used in the compiler of the Clasp \commonlisp{}
system.
\end{abstract}

\begin{CCSXML}
<ccs2012>
<concept>
<concept_id>10011007.10011006.10011041</concept_id>
<concept_desc>Software and its engineering~Compilers</concept_desc>
<concept_significance>500</concept_significance>
</concept>
</ccs2012>
\end{CCSXML}

\ccsdesc[500]{Software and its engineering~Compilers}

\printccsdesc

\keywords{\commonlisp{}, compiler optimization, type inference}

\inputtex{spec-macros.tex}

\inputtex{sec-introduction.tex}
\inputtex{sec-previous.tex}
\inputtex{sec-hir.tex}
\inputtex{sec-algorithm.tex}
\inputtex{sec-optimizations.tex}
\inputtex{sec-conclusions.tex}
\inputtex{sec-acknowledgements.tex}

\bibliographystyle{abbrv}
\bibliography{type-inference}
\end{document}
